#/usr/bin/env python
# coding=utf-8

import random
import re


def color(messages):
    color = '\x1B[%d;%dm' % (1,random.randint(30,37))#设置颜色，但在windows下不可使用，仅使用与linux
    return '%s %s\x1B[0m' % (color,messages)


def colorprint(mes, flag=True):
    def _deco(func):
        def wrapper(args):
            res = func(args)
            print (color(mes + ':\n'))
            if flag:
                for k1, v1 in res.items():
                    if not isinstance(v1, dict):
                        print ('{0}: {1}'.format(k1, v1))
                    else:
                        print ('{0}:'.format(k1))
                        for k2, v2 in v1.items():
                            print ('    {0}: {1}'.format(k2, v2))
            else:
                for i in res:
                    if not isinstance(i[1], dict):
                        print (i)
                    else:
                        for k, v in i[1].items():
                            print ('{0}[{1}]: {2}'.format(k, i[0], v))
            print ('\n')
            return res
        return wrapper
    return _deco


class Resume(object):

    def str(self):
        return color('程健的python简历'.center(400))

    @property
    @colorprint('个人信息')
    def _personal_information(self):
        return {
            'Name' : '杨苏苏',
            'Gender' : 'Male',
            'Born' : [1987, 9, 14],
            'Education' : {
                'School Name' : '江苏大学',
                'Major' : '临床医学',
                'Degree' : '本科',
                'Graduation' : 2010
            },
            'Tel' : '17826071600',
            'Email' : '1244918001@qq.com',
            'Target Positions' : re.compile(
                "'Python Developer'|DevOps",re.I|re.M).pattern
        }

    @property
    @colorprint('个人特点')
    def characteristics(self):
        return {
            '心理承受能力强': '从非计算机专业-excel VBA自动化-Python开发',
            '热衷和喜爱': '正是因为喜欢Python, 我才会放弃采购管理',
            '自学能力强': '自学excel VBA和Python完成项目并满足需求',
            '毅力和耐性': '2013年7月,用8天时间骑车从上海回湖北老家',
            'is_geek' : True
        }

    @property
    @colorprint('个人能力')
    def skills(self):
        return {
            'Language' : {
                '熟悉' : ['Python', 'VBA'],
                '了解' : ['JavaScript', 'C']},
            'OS' : ['macOS', 'Ubuntu', '嵌入式Linux'],
            'Tool' : ['PyCharm', 'IPython', 'Git'],
            'Databaseandtools' : ['MongoDB', 'Redis', 'Memcached'],
            'WebFramework' : {
                '熟悉' : ['Flask', 'Django'],
            },
            'OtherFramework' : ['Pandas', 'NumPy',
                                'Celery', 'Beautiful Soup'],
            'Other' : 'CET-6'
        }

    @property
    @colorprint('工作经验', False)
    def work_experience(self):
        return enumerate([
            {
                'Time period' : '2013.8-2017.01',
                'Company Name' : '上海索广映像有限公司(SONY旗下)',
                'Position' : '采购管理'
            },
            {
                'Time period' : '2010.9-2013.07',
                'Company Name' : '上海宏和电子材料有限公司(台湾首富王永庆之子集团旗下)',
                'Position' : '采购员'
            },
        ])

    @property
    @colorprint('项目经验', False)
    def projectexperience(self):
        return enumerate([
            {
                'Project' : 'VBA实现自动化数据分析/数据汇总/网页表单提交等',
                'Description' : ('在库存管理和采购业务推进的工作中,通过自学excel公式和VBA,'
                                 '将各项业务采用excel VBA实现自动化.')
            },
            {
                'Project' : '雪球组合仓位分析工具',
                'Description' : ('后端使用Flask和Beautiful Soup,前端使用Angular和D3开发的单页面应用，'
                                 '获取雪球ID关注的组合的调仓信息和关注组合的累计股票仓位.')
            },
            {
                'Project' : 'Django By Example逐行中文注释',
                'Description' : ('Django By Example全书有四个完整的Django工程项目,分别是博客网站,图片书签社交网站,'
                                 '购物网站和在线教育网站.我在逐行手写代码,调试运行成功后,对代码给出逐行注释.')
            },
            {
                'Project' : 'Django-CMS源代码分析',
                'Description': ('还在进行中.作为一个大型Django项目和成熟的网站生成工具,'
                                'Django-CMS的源代码可以作为实施Django项目的权威参考.')
            }
        ])

    @property
    @colorprint('@Where', False)
    def findme(self):
        return enumerate([
            {
                'Link' : 'http://www.cnblogs.com/newer027',
                'Description' : '个人技术博客'},
            {
                'Link' : 'https://github.com/newer027',
                'Description' : '个人GitHub主页'},
        ])

    def show(self):
        print(resume.str())
        prolist = [i for i in dir(self) if not i.startswith('__')]
        for pro in prolist:
            getattr(self, pro)


if __name__ == '__main__':
    resume = Resume()
    resume.show()
